package com.eastfair.builder.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.eastfair.core.base.entity.Entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import static com.eastfair.core.utils.DateUtils.DEFAULT_DATE_TIME_FORMAT;
import com.eastfair.annotation.model.EchoVO;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 * 报馆展位基本信息
 * </p>
 *
 * @author dqq
 * @since 2023-04-24
 */
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("bd_report_site")
@ApiModel(value = "ReportSite", description = "报馆展位基本信息")
@AllArgsConstructor
public class ReportSite extends Entity<Long> implements EchoVO {

    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    private Map<String, Object> echoMap = new HashMap<>();
    /**
     * 是否启用：1是；0否
     */
    @ApiModelProperty(value = "是否启用：1是；0否")
    @TableField(value = "is_enabled")
    @Excel(name = "是否启用：1是；0否")
    private Integer isEnabled;

    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    @TableField(value = "is_deleted")
    @Excel(name = "是否删除：1是；0否")
    private Integer isDeleted;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    @TableField(value = "project_id")
    @Excel(name = "项目id")
    private Long projectId;

    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    @TableField(value = "subsystem_id")
    @Excel(name = "子系统id")
    private Long subsystemId;

    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    @TableField(value = "tenant_id")
    @Excel(name = "租户id")
    private Long tenantId;

    /**
     * 报馆ID
     */
    @ApiModelProperty(value = "报馆ID")
    @TableField(value = "report_space_id")
    @Excel(name = "报馆ID")
    private Long reportSpaceId;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @Size(max = 1000, message = "备注长度不能超过1000")
    @TableField(value = "remark", condition = LIKE)
    @Excel(name = "备注")
    private String remark;

    /**
     * 展位号
     */
    @ApiModelProperty(value = "展位号")
    @Size(max = 100, message = "展位号长度不能超过100")
    @TableField(value = "site_name", condition = LIKE)
    @Excel(name = "展位号")
    private String siteName;

    /**
     * 展位面积(平米)
     */
    @ApiModelProperty(value = "展位面积(平米)")
    @TableField(value = "site_area")
    @Excel(name = "展位面积(平米)")
    private BigDecimal siteArea;

    /**
     * (弃用)展台尺寸
     */
    @ApiModelProperty(value = "(弃用)展台尺寸")
    @Size(max = 100, message = "(弃用)展台尺寸长度不能超过100")
    @TableField(value = "site_size", condition = LIKE)
    @Excel(name = "(弃用)展台尺寸")
    private String siteSize;

    /**
     * 展台尺寸长度
     */
    @ApiModelProperty(value = "展台尺寸长度")
    @TableField(value = "site_size_length")
    @Excel(name = "展台尺寸长度")
    private BigDecimal siteSizeLength;

    /**
     * 展台尺寸宽度
     */
    @ApiModelProperty(value = "展台尺寸宽度")
    @TableField(value = "site_size_width")
    @Excel(name = "展台尺寸宽度")
    private BigDecimal siteSizeWidth;

    /**
     * 最高点至地面垂直高度(米)
     */
    @ApiModelProperty(value = "最高点至地面垂直高度(米)")
    @TableField(value = "vertical_height")
    @Excel(name = "最高点至地面垂直高度(米)")
    private BigDecimal verticalHeight;

    /**
     * 顶部结构覆盖面积(平米)
     */
    @ApiModelProperty(value = "顶部结构覆盖面积(平米)")
    @TableField(value = "top_area")
    @Excel(name = "顶部结构覆盖面积(平米)")
    private BigDecimal topArea;

    /**
     * 横跨结构最大尺寸(m)
     */
    @ApiModelProperty(value = "横跨结构最大尺寸(m)")
    @TableField(value = "across_max_size")
    @Excel(name = "横跨结构最大尺寸(m)")
    private BigDecimal acrossMaxSize;

    /**
     * 展位用电总功率(kw)
     */
    @ApiModelProperty(value = "展位用电总功率(kw)")
    @TableField(value = "electric_power")
    @Excel(name = "展位用电总功率(kw)")
    private BigDecimal electricPower;

    /**
     * 承重墙体最小厚度(米)
     */
    @ApiModelProperty(value = "承重墙体最小厚度(米)")
    @TableField(value = "wall_min_thickness")
    @Excel(name = "承重墙体最小厚度(米)")
    private BigDecimal wallMinThickness;

    /**
     * 用电线路规格(平方毫米)
     */
    @ApiModelProperty(value = "用电线路规格(平方毫米)")
    @TableField(value = "electric_wire_spec")
    @Excel(name = "用电线路规格(平方毫米)")
    private BigDecimal electricWireSpec;

    /**
     * 是否双层：0-否，1-是
     */
    @ApiModelProperty(value = "是否双层：0-否，1-是")
    @TableField(value = "is_double")
    @Excel(name = "是否双层：0-否，1-是")
    private Integer isDouble;

    /**
     * 是否吊点：0-否，1-是
     */
    @ApiModelProperty(value = "是否吊点：0-否，1-是")
    @TableField(value = "is_point")
    @Excel(name = "是否吊点：0-否，1-是")
    private Integer isPoint;

    /**
     * 参赞商中文名称
     */
    @ApiModelProperty(value = "参赞商中文名称")
    @Size(max = 100, message = "参赞商中文名称长度不能超过100")
    @TableField(value = "exhibitor_cn_name", condition = LIKE)
    @Excel(name = "参赞商中文名称")
    private String exhibitorCnName;

    /**
     * 参展商英文名称
     */
    @ApiModelProperty(value = "参展商英文名称")
    @Size(max = 200, message = "参展商英文名称长度不能超过200")
    @TableField(value = "exhibitor_en_name", condition = LIKE)
    @Excel(name = "参展商英文名称")
    private String exhibitorEnName;


    @Builder
    public ReportSite(Long id, Long createdBy, LocalDateTime createTime, Long updatedBy, LocalDateTime updateTime, 
                    Integer isEnabled, Integer isDeleted, Long projectId, Long subsystemId, Long tenantId, 
                    Long reportSpaceId, String remark, String siteName, BigDecimal siteArea, String siteSize, BigDecimal siteSizeLength, 
                    BigDecimal siteSizeWidth, BigDecimal verticalHeight, BigDecimal topArea, BigDecimal acrossMaxSize, BigDecimal electricPower, BigDecimal wallMinThickness, 
                    BigDecimal electricWireSpec, Integer isDouble, Integer isPoint, String exhibitorCnName, String exhibitorEnName) {
        this.id = id;
        this.createdBy = createdBy;
        this.createTime = createTime;
        this.updatedBy = updatedBy;
        this.updateTime = updateTime;
        this.isEnabled = isEnabled;
        this.isDeleted = isDeleted;
        this.projectId = projectId;
        this.subsystemId = subsystemId;
        this.tenantId = tenantId;
        this.reportSpaceId = reportSpaceId;
        this.remark = remark;
        this.siteName = siteName;
        this.siteArea = siteArea;
        this.siteSize = siteSize;
        this.siteSizeLength = siteSizeLength;
        this.siteSizeWidth = siteSizeWidth;
        this.verticalHeight = verticalHeight;
        this.topArea = topArea;
        this.acrossMaxSize = acrossMaxSize;
        this.electricPower = electricPower;
        this.wallMinThickness = wallMinThickness;
        this.electricWireSpec = electricWireSpec;
        this.isDouble = isDouble;
        this.isPoint = isPoint;
        this.exhibitorCnName = exhibitorCnName;
        this.exhibitorEnName = exhibitorEnName;
    }

}
